﻿using System;
using System.Collections.Generic;
using Croxweb.Leuphana.Models;

namespace Croxweb.Leuphana.Services.StorageService
{
    public interface IScheduleStore
    {
        /// <summary>
        /// Returns all lectures in the storage file.
        /// </summary>
        /// <returns>List of lectures.</returns>
        IEnumerable<Lecture> GetLectures();


        /// <summary>
        /// Saves a list of lectures to a storage file.
        /// </summary>
        /// <param name="lectures">List of lectures.</param>
        void SaveLectures(IEnumerable<Lecture> lectures);


        /// <summary>
        /// Returns all messages in the storage file.
        /// </summary>
        /// <returns>List of messages.</returns>
        IEnumerable<Message> GetMessages();


        /// <summary>
        /// Saves a list of messages to a storage file.
        /// </summary>
        /// <param name="lectures">List of messages.</param>
        void SaveMessages(IEnumerable<Message> messages);        
        

        /// <summary>
        /// Returns all appointments in the storage file.
        /// </summary>
        /// <returns>List of appointments.</returns>
        IEnumerable<Appointment> GetAppointments();


        /// <summary>
        /// Saves a list of appointments to a storage file.
        /// </summary>
        /// <param name="lectures">List of appointments.</param>
        void SaveAppointments(IEnumerable<Appointment> appointments);
    }
}
